#ifndef USER_FUNCTIONS
#define USER_FUNCTIONS
#include <map>
#include <string>
#include "big_int.h"

struct function_pointer_t
{
   function_pointer_t()
   {
   }

   function_pointer_t(big_int (*function)(big_int)) : function_(function)
   {
   }

   big_int operator()(big_int a) const
   {
      return function_(a);
   }
private:
   big_int(*function_)(big_int);
};

big_int sqr(big_int);
big_int digits(big_int);
big_int fact(big_int);
#endif